package com.wgh.product.service;

import com.wgh.product.entity.shop.Sku;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * SKU Service接口
 * 
 * @author AI Shop
 */
public interface SkuService extends IService<Sku> {

    /**
     * 根据商品ID查询SKU列表
     * 
     * @param productId 商品ID
     * @return SKU列表
     */
    List<Sku> getSkuListByProductId(Long productId);

    /**
     * 根据SKU编号查询SKU
     * 
     * @param skuCode SKU编号
     * @return SKU信息
     */
    Sku getSkuByCode(String skuCode);

    /**
     * 批量更新SKU库存
     * 
     * @param skuIds SKU ID列表
     * @param stock 库存数量
     * @return 是否成功
     */
    boolean updateStockBatch(List<Long> skuIds, Integer stock);

    /**
     * 批量更新SKU价格
     * 
     * @param skuIds SKU ID列表
     * @param price 价格
     * @return 是否成功
     */
    boolean updatePriceBatch(List<Long> skuIds, Double price);

    /**
     * 批量更新SKU状态
     * 
     * @param skuIds SKU ID列表
     * @param status 状态
     * @return 是否成功
     */
    boolean updateStatusBatch(List<Long> skuIds, Integer status);

    /**
     * 扣减SKU库存
     * 
     * @param skuId SKU ID
     * @param quantity 扣减数量
     * @return 是否成功
     */
    boolean deductStock(Long skuId, Integer quantity);

    /**
     * 增加SKU库存
     * 
     * @param skuId SKU ID
     * @param quantity 增加数量
     * @return 是否成功
     */
    boolean addStock(Long skuId, Integer quantity);

    /**
     * 获取SKU详情
     * 
     * @param id SKU ID
     * @return SKU详情
     */
    Sku getSkuDetail(Long id);

    /**
     * 根据商品ID列表查询SKU
     * 
     * @param productIds 商品ID列表
     * @return SKU列表
     */
    List<Sku> getSkuListByProductIds(List<Long> productIds);
}